package com.xyz;

import java.util.ArrayList;

public class Map {
    //定义数据字段
    //地图名
    private String name;
    // 地图描述
    private String info;
    // 地图坐标
    private int x;
    private int y;

    // 地图所包含的怪物
    private ArrayList<Monster> monsters = new ArrayList<>();

    public ArrayList<Monster> getMonsters() {
        return this.monsters;
    }

    public String getName() {
        return name;
    }

    public String getInfo() {
        return info;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public Map(String name, String info, int x, int y) {
        this.name = name;
        this.info = info;
        this.x = x;
        this.y = y;
    }

    //功能方法

    //打印
    public void print(){
        System.out.println("你来到了"+ this.name+this.info);
        System.out.println("当前坐标: x="+this.x+", y="+this.y);
    }

    //将怪物添加到地图中
    public void addMoster(Monster m){
        //为怪物数组列表中添加怪物对象
        // ArrayList 自带的 add 方法
        // 向列表末尾添加一个新项
        monsters.add(m);
        //设置怪物的坐标
        m.setX(this.x);
        m.setY(this.y);
    }

    //查看当前地图中所有的怪物
    public void findMonsters(){

        //先判断地图中是否有怪物，如果有，则打印信息
        if(this.monsters !=null)
        {
            System.out.println("当前地图："+this.name+" 中的怪物有：");
            for (Monster m:this.monsters) {
                m.print();
            }
        }
        else {
            System.out.println("当前地图："+this.name+" 并无怪物！");
        }
    }

    //获得地图中还活着的怪物
    public ArrayList<Monster> getAliveMonsters(){
        //新建一个数组列表，作为容器
        ArrayList<Monster> am = new ArrayList<>();
        //遍历当前地图中的所有怪物
        for (Monster m:this.monsters) {
            //挑出血大于0的，放入新容器
            if(m.getHp()>0){
                am.add(m);
            }
        }
        return am;
    }
}
